package map.tabuleiro.fachada;

import map.tabuleiro.bin.Tabuleiro;
import map.tabuleiro.exception.CasaInvalidaException;
import map.tabuleiro.exception.TabuleiroException;

public class JogoTabuleiroTestFacade {

	private Tabuleiro tabuleiro;
	private static JogoTabuleiroTestFacade instaciaTabuleiro = null;
	/**
	 * Construtor da classe que inicia o tabuleiro.
	 */
	public JogoTabuleiroTestFacade() {
		tabuleiro = new Tabuleiro();
		
	}
	public static JogoTabuleiroTestFacade getInstance(){
		if(instaciaTabuleiro == null){
			
			instaciaTabuleiro = new JogoTabuleiroTestFacade();
			
		}
		return instaciaTabuleiro;
	}
	/**
     * Metodo de criacao do jogo, passando com parametros o numero de pecas e o tamanho do dado.
     * @param numPecas
     * @param tamanhoDado
     */
	public void criarJogo(int numPecas, int tamanhoDado) throws TabuleiroException{
		
		tabuleiro.criarJogo(numPecas, tamanhoDado);
		tabuleiro.iniciarJogo();
		
	}
	/**
	 * Metodo que adiciona um casa ao tabuleiro.
	 * @throws CasaInvalidaException 
	 */
	public void adicionaCasa(String id, String nomeCasa, String param) throws CasaInvalidaException {
		
		tabuleiro.adicionaCasa(nomeCasa,id,param);
		
	}
	/**
	 * Metodo que inicia o jogo.
	 */
	public void iniciarJogo() {

	}
	/**
     * Metodo de saida do jogo.
     */
	public void sairJogo() {

	}
	/**
	 * Metodo de retorno do tamanho do tabuleiro.
	 * @return tamanho tabuleiro.
	 */
	public int getTamanhoTabuleiro(){
		
		return tabuleiro.getTamanhoTabuleiro();
	}
	/**
	 * Metodo de retorno do tamanho do dado.
	 * @return tamano do dado.
	 */
	public int getTamanhoDado(){
		return tabuleiro.getTamanhoDado();
	}
	/**
	 * Metodo de retorno do numero de pecas do tabuleiro.
	 * @return numero de pecas.
	 */
	public int getNumPecas(){
		return tabuleiro.getNumPecas();
	}
	/**
	 * Metodo que atribui um novo valor ao numero de pecas.
	 * @param pecas
	 */
	public void setNumPecas(int pecas){
		tabuleiro.setNumPecas(pecas);
	}
	/**
	 * Metodo que atribui um novo valor ao tamanho do dado.
	 * @param tamanhoDado
	 */
	public void setTamanhoDado(int tamanhoDado){
		tabuleiro.setTamanhoDado(tamanhoDado);
	}

}
